100 CALL CLEAR :: CALL MAGNIFY(3)
110 REM  LANDING GAME
120 REM  X-BASIC
130 REM  TOTTERI, TI-SOFT BELGIUM
140 REM  TRANSLATION FROM FRENCH BY MAURICE SWINNEN WASHINGTON DC AREA 99/ER CLUB
150 REM  MARCH 1984
160 RESTORE 170
170 DATA 94,"3C4299A1A199423C"
180 DATA 92,"000000001"
190 DATA 96,"00000000011F30E0301F0100000000000000000080F80C070CF8800000000000"
200 DATA 100,"00000000011F30E7301F0100000000000000000080F80CE70CF8800000000000"
210 DATA 104,"00000000011F3FFF3F1F0100000000000000000080F8FCFFFCF8800000000000"
220 DATA 108,"00000000FFFF381C2E4687030301010100000000FFFF1C387462E1C0C0808080"
230 DATA 112,"FFC1A2948894A2C18387CF3D0103070FE03010103070E0E0C080808080C0E0F0"
240 DATA 116,"070D193161FF030303FF7F3F1F0F070FE0F0F8FCFEFFC0C0C0FF868C98B0E0F0"
250 DATA 120,"000000000001070C1A32FF010000000000000071D395F9021212FF90D0700000"
260 DATA 124,"0000008ECBA99F404848FF090B0E0000000000000080E030584CFF8000000000"
270 DATA 128,"FF00FF00FFAAAAAA"
280 DATA 0,
290 READ A,B$ :: IF A=0 THEN 310
300 CALL CHAR(A,B$) :: GOTO 290
310 CALL CLEAR :: CALL SCREEN(2) :: FOR T=0 TO 14 :: CALL COLOR(T,16,2) :: NEXT T
320 DISPLAY AT(1,1):" * *   L A N D I N G   * *   *************************"
330 DISPLAY AT(4,1):"DO YOU WANT TO SEE THE      INSTRUCTIONS? (Y-N)"
340 CALL KEY(0,K,S) :: IF S=0 THEN 340
350 IF K=89 THEN 380
360 IF K=78 THEN 390
370 CALL SOUND(1,110,0) :: GOTO 340
380 CALL EXPLICATIONS
390 REM  INI. DEPART
400 CALL CLEAR :: DISPLAY AT(1,1):"ENTER YOUR NAME, PLEASE." :: ACCEPT AT(3,1)BEEPVALIDATE(UALPHA)SIZE(10):NAME$
410 CALL CLEAR :: CALL SCREEN(2) :: FOR T=0 TO 14 :: CALL COLOR(T,16,2) :: NEXT T :: CALL COLOR(13,11,2)
420 FOR ET=1 TO 100 :: CALL HCHAR(INT((22-2+1)*RND)+2,INT(32*RND)+1,92) :: NEXT ET
430 VAIS=3 :: DIFF=0 :: SCORE=0 :: ROWV=0 :: COLV=0
440 REM  DEBUT
450 DISPLAY AT(10,1):"DIFFICULTY :";DIFF
460 DISPLAY AT(12,1):"YOUR SCORE :";SCORE
470 DISPLAY AT(14,1):"HIGH SCORE :";HISCORE
480 FOR DELAY=1 TO 1000 :: NEXT DELAY
490 REM  DEBUT PARTIE
500 REM  PLACEMENT
510 DISPLAY AT(10,1):"" :: DISPLAY AT(12,1):"" :: DISPLAY AT(14,1):""
520 CALL HCHAR(23,1,128,32)
530 DISPLAY AT(1,1):"SPEEDS(H:                         (V:"
540 CALL SPRITE(#1,116,16,161,64,0,DIFF)
550 CALL SPRITE(#2,108,11,161,128,0,DIFF)
560 CALL SPRITE(#3,112,16,161,192,0,DIFF)
570 REM  AMMENE VAISSEAU
580 CALL SPRITE(#4,96,8,12,192,1,0) :: CALL SPRITE(#5,108,8,1,192,1,0)
590 CALL POSITION(#4,POSI,Q) :: IF POSI<30 THEN 590
600 CALL MOTION(#4,0,0,#5,0,0)
610 CALL DELSPRITE(#5)
620 DISPLAY AT(23,1)BEEP :"** PRESS ANY KEY TO BEGIN **"
630 CALL KEY(0,K,S) :: IF S=0 THEN 630
640 CALL HCHAR(23,1,128,32)
650 REM  ENNEMI
660 CALL SPRITE(#5,120,7,41,128,0,-DIFF-5) :: CALL SPRITE(#6,120,7,89,128,0,-DIFF-5)
670 CALL SPRITE(#7,124,7,65,128,0,DIFF+5) :: CALL SPRITE(#8,124,7,113,128,0,DIFF+5)
680 TIME=0
690 REM  JEU COMMENCE
700 TIME=TIME+1
710 CALL JOYST(2,X,Y)
720 ROWV=ROWV+Y/4 :: COLV=COLV+X/4
730 IF COLV>DIFF+6 THEN COLV=DIFF+6
740 IF COLV<-DIFF-6 THEN COLV=-DIFF-6
750 IF ROWV>-3 AND ROWV<3 THEN CALL PATTERN(#4,96)
760 IF(ROWV>-7 AND ROWV<-2)OR(ROWV<7 AND ROWV>2)THEN CALL PATTERN(#4,100)
770 IF ROWV<-6 OR ROWV>6 THEN CALL PATTERN(#4,104)
780 CALL COINC(#4,#2,8,XYZ) :: IF XYZ=-1 THEN 850
790 CALL COINC(ALL ,XYZ) :: IF XYZ=-1 THEN 990
800 CALL POSITION(#4,ROW,COL) :: IF ROW>161 THEN 990
810 CALL MOTION(#4,-ROWV,COLV)
820 DISPLAY AT(1,10):COLV :: DISPLAY AT(2,10):ROWV
830 IF ROWV=0 AND COLV=0 THEN CALL SOUND(-1,110,30) :: GOTO 690
840 CALL SOUND(-3000,ABS(ROWV)+ABS(COLV)+110,0,-7,0) :: GOTO 690
850 REM  GAGNE
860 FOR ST=1 TO 8 :: CALL MOTION(#ST,0,0) :: NEXT ST
870 IF ROWV>2 OR ROWV<-2 THEN 990
880 FOR REP=1 TO 10
890 FOR SON=110 TO 500 STEP 100 :: CALL SOUND(-3000,SON,0) :: NEXT SON
900 CALL SCREEN(16) :: CALL COLOR(1,16,16)
910 FOR SON=500 TO 110 STEP-100 :: CALL SOUND(-3000,SON,0) :: NEXT SON
920 CALL SCREEN(2) :: CALL COLOR(1,16,2)
930 NEXT REP
940 CALL SOUND(-1,110,30)
950 CALL DELSPRITE(ALL)
960 DIFF=DIFF+1 :: ROWV=0 :: COLV=0
970 SCORE=SCORE+(500-TIME)
980 GOTO 440
990 REM  RATE
1000 FOR ST=1 TO 8 :: CALL MOTION(#ST,0,0) :: NEXT ST
1010 FOR REP=1 TO 10
1020 CALL SOUND(-3000,-7,0)
1030 CALL SCREEN(7) :: CALL COLOR(1,7,7)
1040 CALL SOUND(-3000,-6,0)
1050 CALL SCREEN(2) :: CALL COLOR(1,16,2)
1060 NEXT REP
1070 CALL SOUND(-1,110,30)
1080 CALL DELSPRITE(ALL)
1090 ROWV=0 :: COLV=0 :: SCORE=SCORE-50
1100 VAIS=VAIS-1 :: IF VAIS<1 THEN 1150
1110 DISPLAY AT(24,1):""
1120 IF VAIS=1 THEN 1130 ELSE 1140
1130 DISPLAY AT(23,1):"   !!!LAST LANDING CRAFT!!! " :: FOR DELAY=1 TO 1000 :: NEXT DELAY :: GOTO 440
1140 DISPLAY AT(23,1):"!ONLY";VAIS;"CRAFT LEFT ! " :: FOR DELAY=1 TO 1000 :: NEXT DELAY :: GOTO 440
1150 REM  PARTIE FINIE
1160 CALL CLEAR
1170 M$(1)="***************************"
1180 M$(2)="*                         *"
1190 M$(3)="*****    GAME OVER    *****"
1200 M$(4)="*                         *"
1210 M$(5)="***************************"
1220 FOR MES=1 TO 5
1230 FOR A=1 TO LEN(M$(MES))
1240 CALL HCHAR(9+MES,3+A,30) :: CALL HCHAR(9+MES,3+A,ASC(SEG$(M$(MES),A,1)))
1250 NEXT A
1260 NEXT MES
1270 IF SCORE>HISCORE THEN 1340
1280 PRINT "<REDO>=REPLAY THE GAME      <BACK>=STOP THE PROGRAM" :: PRINT
1290 PRINT "YOUR CHOICE (REDO-BACK)"
1300 CALL KEY(0,K,S) :: IF S=0 THEN 1300
1310 IF K=6 THEN CALL CLEAR :: GOTO 390
1320 IF K=15 THEN CALL CLEAR :: END
1330 CALL SOUND(1,110,0) :: GOTO 1300
1340 CALL CLEAR
1350 REM  RECORD
1360 DISPLAY AT(8,1):"SCORE :";SCORE
1370 DISPLAY AT(10,1):"!!!   CONGRATULATIONS    !!!"
1380 DISPLAY AT(12,1):"YOU BEAT THE"
1390 DISPLAY AT(14,1):"HIGHEST SCORE. SO,YOU DID IT"
1400 DISPLAY AT(16,1):"THE CHAMPION, ";NAME$
1410 BEST$=NAME$ :: HISCORE=SCORE
1420 GOTO 1280
1430 SUB EXPLICATIONS
1440 CALL CLEAR
1450 CALL SCREEN(2) :: CALL COLOR(0,8,5) :: FOR T=1 TO 14 :: CALL COLOR(T,16,5) :: NEXT T
1460 DISPLAY AT(1,1):" * * * L A N D I N G * * * "
1470 DISPLAY AT(2,1):"***************************"
1480 DISPLAY AT(4,1):"AS THE NAME SUGGESTS, YOU "
1490 DISPLAY AT(6,1):"MUST LAND ON THE BASE."
1500 DISPLAY AT(8,1):"BUT AIRPLANES MOVES IN YOUR"
1510 DISPLAY AT(10,1):"WAY.  SO YOU MUST TRY TO"
1520 DISPLAY AT(12,1):"AVOID THEM."
1530 DISPLAY AT(24,1)BEEP :"PRESS ENTER TO CONTINUE"
1540 CALL KEY(0,K,S) :: IF S=0 THEN 1540
1550 CALL CLEAR
1560 DISPLAY AT(1,1):"!! WARNING !!"
1570 DISPLAY AT(3,1):"THESE INSTRUCTIONS ARE VERY"
1580 DISPLAY AT(5,1):"IMPORTANT FOR THE GAME."
1590 FOR MUS=110 TO 200 STEP 10 :: CALL SOUND(-2000,MUS,0) :: NEXT MUS
1600 FOR MUS=200 TO 110 STEP-10 :: CALL SOUND(-2000,MUS,0) :: NEXT MUS
1610 CALL SOUND(-1,110,30) :: FOR DELAY=1 TO 1500 :: NEXT DELAY
1620 CALL CLEAR
1630 DISPLAY AT(1,1):"MOVE YOUR LANDING CRAFT"
1640 DISPLAY AT(3,1):"WITH JOYSTICK NUMBER 2"
1650 DISPLAY AT(4,1):"----------------------------"
1660 DISPLAY AT(5,1):"*THIS IS YOUR BASE : ln                          mo"
1670 DISPLAY AT(8,1):"*THESE ARE THE AIRPLANES :                      &"
1680 CALL HCHAR(9,20,120) :: CALL HCHAR(9,21,122) :: CALL HCHAR(10,20,121) :: CALL HCHAR(10,21,123)
1690 CALL HCHAR(9,25,124) :: CALL HCHAR(9,26,126) :: CALL HCHAR(10,25,125) :: CALL HCHAR(10,26,127)
1700 DISPLAY AT(12,1):"3 ASPECTS OF YOUR LANDER:"
1710 DISPLAY AT(14,1):"`b ) YOU CAN LAND ON        ac ) YOUR BASE."
1720 DISPLAY AT(17,1):"df ) YOU TRAVEL TOO FAST    eg ) TO LAND."
1730 DISPLAY AT(20,1):"hj ) YOU TRAVEL SO FAST     ik ) THAT YOU'RE IN DANGER"
1740 DISPLAY AT(24,1)BEEP :"PRESS ENTER TO CONTINUE"
1750 CALL KEY(0,K,S) :: IF S=0 THEN 1750
1760 CALL CLEAR
1770 DISPLAY AT(1,1):"WHEN YOU ARE TRAVELING, YOU"
1780 DISPLAY AT(3,1):"ARE UNABLE TO SLOW DOWN"
1790 DISPLAY AT(5,1):"IMMEDIATELY."
1800 DISPLAY AT(7,1):"PRESS <ENTER> FOR A DEMO"
1810 CALL KEY(0,K,S) :: IF S=0 THEN 1810
1820 DISPLAY AT(9,1):"SPEED :"
1830 CALL SPRITE(#1,100,16,96,10)
1840 FOR SPE=0 TO 50
1850 DISPLAY AT(9,8):SPE
1860 CALL MOTION(#1,0,SPE)
1870 NEXT SPE
1880 FOR SPE=50 TO 0 STEP-1
1890 DISPLAY AT(9,8):SPE
1900 CALL MOTION(#1,0,SPE)
1910 NEXT SPE
1920 DISPLAY AT(15,1):"PRESS REDO OR BACK"
1930 CALL KEY(0,K,S) :: IF S=0 THEN 1930
1940 IF K=6 THEN CALL HCHAR(15,1,32,32) :: GOTO 1830
1950 IF K=15 THEN 1970
1960 CALL SOUND(1,110,0) :: GOTO 1930
1970 DISPLAY AT(15,1):""
1980 DISPLAY AT(19,1):"PRESS"
1990 DISPLAY AT(21,1):"<FCTN AID> FOR INSTRUCTIONS"
2000 DISPLAY AT(23,1):"<FCTN BEGIN> TO START"
2010 CALL KEY(0,K,S) :: IF S=0 THEN 2010
2020 CALL DELSPRITE(ALL)
2030 IF K=1 THEN 1440
2040 IF K=14 THEN 2060
2050 CALL SOUND(1,110,0) :: GOTO 2010
2060 CALL CLEAR
2070 SUBEND
